home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac: Not for Sale / Another.not.for.sale (Australia).iso / fade into you / being there / Issues & Ideas / SGML / SGMLintro.txt < prev   
Text File  |  1994-07-05  |  81KB  |  1,569 lines

  1.  
  2. This file is a draft chapter of the forthcoming Text Encoding Initiative 
  3. (TEI) Guidelines for Electronic Text Encoding and Interchange.
  4.  
  5. **************************************************************************
  6.  
  7.          The Association for Computers and the Humanities (ACH) 
  8.           The Association for Computational Linguistics (ACL)
  9.       The Association for Literary and Linguistic Computing (ALLC)
  10.   
  11.                        Guidelines for Electronic
  12.                     Text Encoding and Interchange
  13.  
  14.                                Edited by
  15.  
  16.                  C. M. Sperberg-McQueen and Lou Burnard
  17.  
  18.                           TEI P2, Chapter 2 SG
  19.                         Text Encoding Initiative
  20.                             Chicago, Oxford
  21.   
  22.                      (c) 1990, 1992 ACH, ACL, ALLC
  23.                               May 28, 1993
  24.                      Draft Version 2, May 28, 1993
  25.  
  26.  
  27. TEI P2, Chapter SG                                                page 2
  28. ------------------------------------------------------------------------ 
  29.                                  Part 1
  30.                               INTRODUCTION
  31.  
  32.                                Chapter 2
  33.                      A GENTLE INTRODUCTION TO SGML
  34.  
  35.    The encoding scheme defined by these Guidelines is formulated as an
  36. application of a system known as the Standard Generalized Markup Language 
  37. (SGML).(1)  SGML is an international standard for the definition
  38. of device-independent, system-independent methods of representing texts
  39. in electronic form.  This chapter presents a brief tutorial guide to its
  40. main features, for those readers who have not encountered it before.
  41. For a more technical account of TEI practice in using the SGML standard,
  42. see chapter 30, "TEI Conformance," [in separate fascicle]; for a more
  43. technical description of the subset of SGML used by the TEI encoding
  44. scheme, see chapter 39, "Formal Grammar for the TEI-Interchange-Format
  45. Subset of SGML," [in separate fascicle].
  46.  
  47.    SGML is an international standard for the description of marked-up
  48. electronic text.  More exactly, SGML is a metalanguage, that is, a means
  49. of formally describing a language, in this case, a markup language.
  50. Before going any further we should define these terms.
  51.  
  52.    Historically, the word markup has been used to describe annotation or
  53. other marks within a text intended to instruct a compositor or typist
  54. how a particular passage should be printed or laid out.  Examples
  55. include wavy underlining to indicate boldface, special symbols for passages 
  56. to be omitted or printed in a particular font and so forth.  As
  57. the formatting and printing of texts was automated, the term was extended 
  58. to cover all sorts of special markup codes inserted into electronic
  59. texts to govern formatting, printing, or other processing.
  60.  
  61.    Generalizing from that sense, we define markup, or (synonymously)
  62. encoding, as any means of making explicit an interpretation of a text.
  63. At a banal level, all printed texts are encoded in this sense:  punctuation 
  64. marks, use of capitalization, disposition of letters around the
  65. page, even the spaces between words, might be regarded as a kind of
  66. markup, the function of which is to help the human reader determine
  67. where one word ends and another begins, or how to identify gross structural 
  68. features such as headings or simple syntactic units such as dependent 
  69. clauses or sentences.  Encoding a text for computer processing is
  70. in principle, like transcribing a manuscript from scriptio continua, a
  71. process of making explicit what is conjectural or implicit, a process of
  72. directing the user as to how the content of the text should be interpreted.
  73.  
  74.    By markup language we mean a set of markup conventions used together
  75. for encoding texts.  A markup language must specify what markup is
  76. allowed, what markup is required, how markup is to be distinguished from
  77. text, and what the markup means.  SGML provides the means for doing the
  78. first three; documentation such as these Guidelines is required for the
  79. last.
  80.  
  81.    The present chapter attempts to give an informal introduction -- much
  82. less formal than the standard itself -- to those parts of SGML of which a
  83. proper understanding is necessary to make best use of these Guidelines.
  84.  
  85.  
  86. 2.1   What's Special about SGML?
  87.  
  88.    There are three characteristics of SGML which distinguish it from
  89. other markup languages:  its emphasis on descriptive rather than procedural 
  90. markup; its document type concept; and its independence of any one
  91. system for representing the script in which a text is written.  These
  92. three aspects are discussed briefly below, and then in more depth in
  93. sections 2.3, "SGML Structures," and 2.7, "SGML Entities," on page 3.
  94.  
  95.  
  96. 2.1.1   Descriptive Markup
  97.  
  98.    A descriptive markup system uses markup codes which simply provide
  99. names to categorize parts of a document.  Markup codes such as "< para>"
  100. or "\end{list}" assert simply of the part of a document which they identify 
  101. "the following item is a paragraph," "this is the end of the most
  102. recently begun list," etc.  By contrast, a procedural markup system
  103. defines what processing is to be carried out at particular points in a
  104. document:  "call procedure para with parameters 1, b and x here" or
  105. "move the left margin 2 quads left, move the right margin 2 quads right,
  106. skip down one line, and go to the new left margin," etc.  In SGML, the
  107. instructions needed to process a document for some particular purpose
  108. (for example, to format it) are sharply distinguished from the descriptive 
  109. markup which occurs within the document.  Usually, they are collected 
  110. outside the document in separate procedures or programs.
  111.  
  112.    With descriptive instead of procedural markup the same document can
  113. readily be processed by many different pieces of software, each of which
  114. can apply different processing instructions to those parts of it which
  115. are considered relevant.  For example, a content analysis program might
  116. disregard entirely the footnotes embedded in an annotated text, while a
  117. formatting program might extract and collect them all together for
  118. printing at the end of each chapter. Different sorts of processing
  119. instructions can be associated with the same parts of the file.  For
  120. example, one program might extract names of persons and places from a
  121. document to create an index or database, while another, operating on the
  122. same text, might print names of persons and places in a distinctive
  123. typeface.
  124.   
  125. 2.1.2   Types of Document
  126.  
  127.    Secondly, SGML introduces the notion of a document type, and hence a
  128. document type definition (DTD).  Documents are regarded as having types,
  129. just as other objects processed by computers do.  The type of a document
  130. is formally defined by its constituent parts and their structure.  The
  131. definition of a report, for example, might be that it consisted of a
  132. title and possibly an author, followed by an abstract and a sequence of
  133. one or more paragraphs.  Anything lacking a title, according to this
  134. formal definition, would not formally be a report, and neither would a
  135. sequence of paragraphs followed by an abstract, whatever other report-
  136. like characteristics these might have for the human reader.
  137.  
  138.    If documents are of known types, a special purpose program (called a
  139. parser) can be used to process a document claiming to be of a particular
  140. type and check that all the elements required for that document type are
  141. indeed present and correctly ordered.  More significantly, different
  142. documents of the same type can be processed in a uniform way. Programs
  143. can be written which take advantage of the knowledge encapsulated in the
  144. document structure information, and which can thus behave in a more
  145. intelligent fashion.
  146.   
  147. 2.1.3   Data Independence
  148.  
  149.    A basic design goal of SGML was to ensure that documents encoded
  150. according to its provisions should be transportable from one hardware/
  151. software environment to another without loss of information.  The two
  152. features discussed so far both address this requirement at an abstract
  153. level:  the third feature addresses it at the level of the strings of
  154. bytes (characters) of which documents are composed.  SGML provides a
  155. general purpose mechanism for string substitution, that is, a simple
  156. machine-independent way of stating that a particular string of characters 
  157. in the document should be replaced by some other string when the
  158. document is processed.  One obvious application for this mechanism is to
  159. ensure consistency of nomenclature; another, more significant, is to
  160. counter the notorious inability of different computer systems to under-
  161. stand each other's character sets, or of any one system to provide all
  162. the graphic characters needed for a particular application, by providing
  163. descriptive mappings for non-portable characters. The strings defined by
  164. this string-substitution mechanism are called entities and they are 
  165. discussed below in section 2.7, "SGML Entities," on page 3.
  166.  
  167. 2.2   Textual Structure
  168.  
  169.    A text is not an undifferentiated sequence of words, much less of
  170. bytes. For different purposes, it may be divided into many different
  171. units, of different types or sizes.  A prose text such as this one might
  172. be divided into sections, chapters, paragraphs, and sentences.  A verse
  173. text might be divided into cantos, stanzas, and lines.  Once printed,
  174. sequences of prose and verse might be divided into volumes, gatherings,
  175. and pages.
  176.  
  177.    Structural units of this kind are most often used to identify specific 
  178. locations or reference points within a text ("the third sentence of
  179. the second paragraph in chapter ten"; "canto 10, line 1234"; "page 412,"
  180. etc.) but they may also be used to subdivide a text into meaningful
  181. fragments for analytic purposes ("is the average sentence length of section 
  182. 2 different from that of section 5?"  "how many paragraphs separate
  183. each occurrence of the word nature?" "how many pages?").  Other structural 
  184. units are more clearly analytic, in that they characterize a section of 
  185. a text.  A dramatic text might regard each speech by a different
  186. character as a unit of one kind, and stage directions or pieces of
  187. action as units of another kind.  Such an analysis is less useful for
  188. locating parts of the text ("the 93rd speech by Horatio in Act 2") than
  189. for facilitating comparisons between the words used by one character and
  190. those of another, or those used by the same character at different
  191. points of the play.
  192.  
  193.    In a prose text one might similarly wish to regard as units of different 
  194. types passages in direct or indirect speech, passages employing
  195. different stylistic registers (narrative, polemic, commentary, argument,
  196. etc.), passages of different authorship and so forth.  And for certain
  197. types of analysis (most notably textual criticism) the physical appearance 
  198. of one particular printed or manuscript source may be of importance:  
  199. paradoxically, one may wish to use descriptive markup to describe 
  200. presentational features such as typeface, line breaks, use of
  201. white space and so forth.
  202.  
  203.    These textual structures overlap with each other in complex and
  204. unpredictable ways.  Particularly when dealing with texts as instantiated 
  205. by paper technology, the reader needs to be aware of both the physical 
  206. organization of the book and the logical structure of the work it
  207. contains.  Many great works (Sterne's Tristram Shandy for example) cannot 
  208. be fully appreciated without an awareness of the interplay between
  209. narrative units (such as chapters or paragraphs) and page divisions.
  210. For many types of research, it is the interplay between different levels
  211. of analysis which is crucial:  the extent to which syntactic structure
  212. and narrative structure mesh, or fail to mesh, for example, or the
  213. extent to which phonological structures reflect morphology.
  214.  
  215. 2.3   SGML Structures
  216.  
  217.    This section describes the simple and consistent mechanism for the
  218. markup or identification of structural textual units which is provided
  219. by SGML.  It also describes the methods SGML provides for the expression
  220. of rules defining how combinations of such units can meaningfully occur
  221. in any text. 
  222.  
  223. 2.3.1   Elements
  224.  
  225.    The technical term used in the SGML standard for a textual unit,
  226. viewed as a structural component, is element.  Different types of elements 
  227. are given different names, but SGML provides no way of expressing
  228. the meaning of a particular type of element, other than its relationship
  229. to other element types.  That is, all one can say about an element
  230. called (for instance) <blort> is that instances of it may (or may not)
  231. occur within elements of type <farble>, and that it may (or may not) be
  232. decomposed into elements of type <blortette>.  It should be stressed
  233. that the SGML standard is entirely unconcerned with the semantics of
  234. textual elements:  these are application dependent.(2)  It is up to the
  235. creators of SGML conformant tag sets (such as these Guidelines) to
  236. choose intelligible names for the elements they identify and to document
  237. their proper use in text markup.  That is one purpose of this document.
  238. From the need to choose element names indicative of function comes the
  239. technical term for the name of an element type, which is generic 
  240. identifier, or GI.
  241.  
  242.    Within a marked up text (a document instance), each element must be
  243. explicitly marked or tagged in some way.  The standard provides for a
  244. variety of different ways of doing this, the most commonly used being to
  245. insert a tag at the beginning of the element (a start-tag) and another
  246. at its end (an end-tag).  The start- and end-tag pair are used to bracket 
  247. off the element occurrences within the running text, in rather the
  248. same way as different types of parentheses or quotation marks are used
  249. in conventional punctuation.  For example, a quotation element in a text
  250. might be tagged as follows:
  251.  
  252.          ...  Rosalind's remarks <quote>This is the silliest stuff
  253.           that ere I heard of!</quote> clearly indicate ...
  254.  
  255. As this example shows, a start-tag takes the form <name>, where the
  256. opening angle bracket indicates the start of the start-tag, "name" is
  257. the generic identifier of the element which is being delimited, and the
  258. closing angle bracket indicates the end of a tag.  An end-tag takes an
  259. identical form, except that the opening angle bracket is followed by a
  260. solidus (slash) character, so that the corresponding end-tag would be
  261. </name>.(3)
  262.  
  263. 2.3.2   Content Models:  An Example
  264.  
  265.    An element may be empty, that is, it may have no content at all, or
  266. it may contain simple text.  More usually however, elements of one type
  267. will be embedded (contained entirely) within elements of a different
  268. type.  This is one reason why an end-tag needs to specify which element
  269. it is closing.
  270.  
  271.    To illustrate this, we will consider a very simple structural model.
  272. Let us assume that we wish to identify within an anthology only poems,
  273. their titles, and the stanzas and lines of which they are composed.  In
  274. SGML terms, our document type is the anthology, and it consists of a
  275. series of poems.  Each poem has embedded within it one element, a title,
  276. and several occurrences of another, a stanza, each stanza having embedded 
  277. within it a number of line elements.  Fully marked up, a text conforming 
  278. to this model might appear as follows:(4)
  279.  
  280.          <anthology>
  281.            <poem><title>The SICK ROSE</title>
  282.               <stanza>
  283.                    <line>O Rose thou art sick.</line>
  284.                    <line>The invisible worm,</line>
  285.                    <line>That flies in the night</line>
  286.                    <line>In the howling storm:</line>
  287.               </stanza>
  288.               <stanza>
  289.                    <line>Has found out thy bed</line>
  290.                    <line>Of crimson joy:</line>
  291.                    <line>And his dark secret love</line>
  292.                    <line>Does thy life destroy.</line>
  293.               </stanza>
  294.            </poem>
  295.                     <! --  more poems go here     -- >
  296.          </anthology>
  297.   
  298.    It should be stressed that this example does not use the same names
  299. as are proposed for corresponding elements elsewhere in these Guidelines: 
  300. the above is not a valid TEI document.  It will however serve as
  301. an introduction to the basic notions of SGML.  White space and line
  302. breaks have been added to the above example for the sake of visual clarity 
  303. only; they have no particular significance in the SGML encoding
  304. itself.  Also, the line
  305.  
  306.                 <! --  more poems go here     -- >
  307.  
  308. is an SGML comment and is not treated as part of the text.
  309.  
  310.    This example makes no assumptions about the rules governing, for
  311. example, whether or not a title can appear in places other than preceding 
  312. the first stanza, or whether lines can appear which are not included
  313. in a stanza:  that is why its markup appears so verbose.  In such cases,
  314. the beginning and end of every element must be explicitly marked,
  315. because there are no identifiable rules about which elements can appear
  316. where.  In practice, however rules can usually be formulated to reduce
  317. the need for so much tagging.  For example, considering our greatly
  318. over-simplified model of a poem, we could state the following rules:
  319.  
  320. 1.    An anthology contains a number of poems and nothing else.
  321. 2.    A poem always has a single title element which precedes the first
  322.       stanza and contains no other elements.
  323. 3.    Apart from the title, a poem consists only of stanzas.
  324. 4.    Stanzas consist only of lines and every line is contained by a
  325.       stanza.
  326. 5.    Nothing can follow a stanza except another stanza or the end of a
  327.       poem.
  328. 6.    Nothing can follow a line except another line or the start of a
  329.       new stanza.
  330.  
  331.    From these rules, it may be inferred that we do not need to mark the
  332. ends of stanzas or lines explicitly.  From rule 2 it follows that we do
  333. not need to mark the end of the title -- it is implied by the start of the
  334. first stanza.  Similarly, from rules 3 and 1 it follows that we need not
  335. mark the end of the poem:  since poems cannot occur within poems but
  336. must occur within anthologies, the end of a poem is implied by the start
  337. of the next poem, or by the end of the anthology.  Applying these 
  338. simplifications, we could mark up the same poem as follows:
  339.  
  340.          <anthology>
  341.               <poem><title>The SICK ROSE
  342.               <stanza>
  343.                    <line>O Rose thou art sick.
  344.                    <line>The invisible worm,
  345.                    <line>That flies in the night
  346.                    <line>In the howling storm:
  347.               <stanza>
  348.                    <line>Has found out thy bed
  349.                    <line>Of crimson joy:
  350.                    <line>And his dark secret love
  351.                    <line>Does thy life destroy.
  352.  
  353.               <poem>
  354.                    <! --  more poems go here     -- >
  355.  
  356.          </anthology>
  357.   
  358.    The ability to use rules stating which elements can be nested within
  359. others to simplify markup is a very important characteristic of SGML.
  360. Before considering these rules further, you may wish to consider how
  361. text marked up in the form above could be processed by a computer for
  362. very many different purposes.  A simple indexing program could extract
  363. only the relevant text elements in order to make a list of titles, or of
  364. words used in the poem text; a simple formatting program could insert
  365. blank lines between stanzas, perhaps indenting the first line of each,
  366. or inserting a stanza number.  Different parts of each poem could be
  367. typeset in different ways.  A more ambitious analytic program could
  368. relate the use of punctuation marks to stanzaic and metrical 
  369. divisions.(5)  Scholars wishing to see the implications of changing the
  370. stanza or line divisions chosen by the editor of this poem can do so
  371. simply by altering the position of the tags.  And of course, the text as
  372. presented above can be transported from one computer to another and 
  373. processed by any program (or person) capable of making sense of the tags
  374. embedded within it with no need for the sort of transformations and
  375. translations needed to move word processor files around.
  376.  
  377. 2.4   Defining SGML Document Structures:  The DTD
  378.  
  379.    Rules such as those described above are the first stage in the 
  380. creation of a formal specification for the structure of an SGML document,
  381. or document type definition, usually abbreviated to DTD.  In creating a
  382. DTD, the document designer may be as lax or as restrictive as the 
  383. occasion warrants.  A balance must be struck between the convenience of 
  384. following simple rules and the complexity of handling real texts. This is
  385. particularly the case when the rules being defined relate to texts which
  386. already exist:  the designer may have only the haziest of notions as to
  387. an ancient text's original purpose or meaning and hence find it very
  388. difficult to specify consistent rules about its structure.  On the other
  389. hand, where a new text is being prepared to an exact specification, for
  390. example for entry into a textual database of some kind, the more 
  391. precisely stated the rules, the better they can be enforced.  Even in the
  392. case where an existing text is being marked up, it may be beneficial to
  393. define a restrictive set of rules relating to one particular view or
  394. hypothesis about the text -- if only as a means of testing the usefulness
  395. of that view or hypothesis.  It is important to remember that every 
  396. document type definition is an interpretation of a text.  There is no 
  397. single DTD which encompasses any kind of absolute truth about a text,
  398. although it may be convenient to privilege some DTDs above others for
  399. particular types of analysis.
  400.  
  401.    At present, SGML is most widely used in environments where uniformity
  402. of document structure is a major desideratum.  In the production of
  403. technical documentation, for example, it is of major importance that
  404. sections and subsections should be properly nested, that cross references 
  405. should be properly resolved and so forth.  In such situations, documents 
  406. are seen as raw material to match against pre-defined sets of
  407. rules.  As discussed above, however, the use of simple rules can also
  408. greatly simplify the task of tagging accurately elements of less rigidly
  409. constrained texts.  By making these rules explicit, the scholar reduces
  410. his or her own burdens while also being forced to make explicit an
  411. interpretation of the text being encoded.
  412.   
  413. 2.4.1   An Example DTD
  414.  
  415.    A DTD is expressed in SGML as a set of declarative statements, using
  416. a simple syntax defined in the standard.  For our simple model of a
  417. poem, the following declarations would be appropriate:
  418.  
  419.          <!ELEMENT anthology      - -  (poem+)>
  420.          <!ELEMENT poem           - -  (title?, stanza+)>
  421.          <!ELEMENT title          - O  (#PCDATA) >
  422.          <!ELEMENT stanza         - O  (line+)   >
  423.          <!ELEMENT line           O O  (#PCDATA) >
  424.  
  425. These five lines are examples of formal SGML element declarations. A
  426. declaration, like an element, is delimited by angle brackets; the first
  427. character following the opening bracket must be an exclamation mark,
  428. followed immediately by one of a small set of SGML-defined keywords,
  429. specifying the kind of object being declared. The five declarations
  430. above are all of the same type: each begins with an "ELEMENT" keyword,
  431. indicating that it declares an element, in the technical sense defined
  432. above. Each consists of three parts:  a name or group of names, two
  433. characters specifying "minimization rules," and a "content model."  Each
  434. of these parts is discussed further below.  Components of the declaration 
  435. are separated by white space, that is one or more blanks, tabs or newlines.
  436.  
  437.    The first part of each declaration above gives the generic identifier
  438. of the element which is being declared, for example poem, title, etc.
  439. It is possible to declare several elements in one statement, as discussed 
  440. below.
  441.  
  442. 2.4.2   Minimization Rules
  443.  
  444.    The second part of the declaration specifies what are called 
  445. minimization rules for the element concerned.  These rules determine whether
  446. or not start- and end-tags must be present in every occurrence of the
  447. element concerned.  They take the form of a pair of characters, separated 
  448. by white space, the first of which relates to the start-tag, and the
  449. second to the end-tag.  In either case, either a hyphen or a letter O
  450. (for "omissible" or "optional") must be given; the hyphen indicating
  451. that the tag must be present, and the letter O that it may be omitted.
  452. Thus, in this example, every element except <line> must have a start-
  453. tag.  Only the <poem> and <anthology> elements must have end-tags as
  454. well.
  455.   
  456. 2.4.3   Content Model
  457.  
  458.    The third part of each declaration, enclosed in parentheses, is
  459. called the content model of the element, because it specifies what element 
  460. occurrences may legitimately contain.  Contents are specified
  461. either in terms of other elements or using special reserved words.
  462. There are several such reserved words, of which by far the most commonly
  463. encountered is #PCDATA, as in this example.  This is an abbreviation for
  464. "parsed character data," and it means that the element being defined may
  465. contain any valid character data.  If an SGML declaration is thought of
  466. as a structure like a family tree, with a single ancestor at the top (in
  467. our case, this would be the <anthology>), then almost always, following
  468. the branches of the tree downwards (for example, from <anthology> to
  469. <poem> to <stanza> to <line> and <title>) will lead eventually to
  470. #PCDATA. In our example, <title> and <line>s are so defined. Since their
  471. content models say #PCDATA only and name no embedded elements, they may
  472. not contain any embedded elements.
  473.  
  474.  
  475. 2.4.4   Occurrence Indicators
  476.  
  477.    The declaration for <stanza> in the example above states that a stanza 
  478. consists of one or more lines. It uses an occurrence indicator (the
  479. plus sign) to indicate how many times the element named in its content
  480. model may occur.  There are three occurrence indicators in the SGML syntax, 
  481. conventionally represented by the plus sign, the question mark, and
  482. the asterisk or star. The plus sign means that there may be one or more
  483. occurrences of the element concerned; the question mark means that there
  484. may be at most one and possibly no occurrence; the star means that the
  485. element concerned may either be absent or appear one or more times.
  486. Thus, if the content model for <stanza> were "(LINE*)," stanzas with no
  487. lines would be possible as well as those with more than one line.  If it
  488. were "(LINE?)," again empty stanzas would be countenanced, but no stanza
  489. could have more than a single line.  The declaration for <poem> in the
  490. example above thus states that a <poem> cannot have more than one title,
  491. but may have none, and that it must have at least one <stanza> and may
  492. have several.
  493.  
  494.  
  495. 2.4.5   Group Connectors
  496.  
  497.    The content model "(TITLE?, STANZA+)" contains more than one component, 
  498. and thus needs additionally to specify the order in which these
  499. elements (<title> and <stanza>) may appear.  This ordering is determined
  500. by the group connector (the comma) used between its components.  There
  501. are three possible group connectors, conventionally represented by comma, 
  502. vertical bar, and ampersand.(6)  The comma means that the components
  503. it connects must both appear in the order specified by the content model. 
  504. The ampersand indicates that the components it connects must both
  505. appear but may appear in any order.  The vertical bar indicates that
  506. only one of the components it connects may appear.  If the comma in this
  507. example were replaced by an ampersand, a title could appear either
  508. before the stanzas of a <poem> or at the end (but not between stanzas).
  509. If it were replaced by a vertical bar, then a <poem> would consist of
  510. either a title or just stanzas -- but not both! 
  511.  
  512. 2.4.6   Model Groups
  513.  
  514.    In our example so far, the components of each content model have been
  515. either single elements or #PCDATA.  It is quite permissible however to
  516. define content models in which the components are lists of elements,
  517. combined by group connectors.  Such lists, known as model groups, may
  518. also be modified by occurrence indicators and themselves combined by
  519. group connectors.  To demonstrate these facilities, let us now expand
  520. our example to include non-stanzaic types of verse.  For the sake of
  521. demonstration, we will categorize poems as one of stanzaic, couplets, or
  522. blank (or stichic).  A blank-verse poem consists simply of lines (we
  523. ignore the possibility of verse paragraphs for the moment)(7) so no
  524. additional elements need be defined for it.  A couplet is defined as a
  525. <line1> followed by a <line2>.
  526.  
  527.      <!ELEMENT couplet O O (line1, line2) >
  528.  
  529.    The elements <line1> and <line2> (which are distinguished to enable
  530. studies of rhyme scheme, for example) have exactly the same content model 
  531. as the existing <line> element.  They can therefore share the same
  532. declaration.  In this situation, it is convenient to supply a name group
  533. as the first component of a single element declaration, rather than give
  534. a series of declarations differing only in the names used.  A name group
  535. is a list of GIs connected by any group connector and enclosed in 
  536. parentheses, as follows:
  537.  
  538.      <!ELEMENT (line | line1 | line2) O O (#PCDATA) >
  539.  
  540. The declaration for the <poem> element can now be changed to include all
  541. three possibilities:
  542.  
  543.      <!ELEMENT poem - O (title?, (stanza+ | couplet+ | line+) ) >
  544.  
  545. That is, a poem consists of an optional title, followed by several stanzas, 
  546. or several couplets, or several lines.  Note the difference between
  547. this definition and the following:
  548.  
  549.      <!ELEMENT poem - O (title?, (stanza | couplet | line)+ ) >
  550.  
  551. The second version, by applying the occurrence indicator to the group
  552. rather than to each element within it, would allow for a single poem to
  553. contain a mixture of stanzas, couplets or blank verse.
  554.  
  555.    Quite complex models can easily be built up in this way, to match the
  556. structural complexity of many types of text.  As a further example, consider 
  557. the case of stanzaic verse in which a refrain or chorus appears.
  558. A refrain may be composed of repetitions of the line element, or it may
  559. simply be text, not divided into verse lines.  A refrain can appear at
  560. the start of a poem only, or as an optional addition following each
  561. stanza.  This could be expressed by a content model such as the following:
  562.  
  563.      <!ELEMENT refrain - - (#PCDATA | line+)>
  564.      <!ELEMENT poem    - O (title?,
  565.                            ( (line+)
  566.                            | (refrain?, (stanza, refrain?)+ ) )) >
  567.  
  568. That is, a poem consists of an optional title, followed by either a
  569. sequence of lines, or an un-named group, which starts with an optional
  570. refrain, followed by one of more occurrences of another group, each member 
  571. of which is composed of a stanza followed by an optional refrain.  A
  572. sequence such as "refrain - stanza - stanza - refrain" follows this pattern, 
  573. as does the sequence "stanza - refrain - stanza - refrain."  The
  574. sequence "refrain - refrain - stanza - stanza" does not, however, and
  575. neither does the sequence "stanza - refrain - refrain - stanza."  Among
  576. other conditions made explicit by this content model are the requirements 
  577. that at least one stanza must appear in a poem, if it is not composed 
  578. simply of lines, and that if there is both a title and a stanza
  579. they must appear in that order.
  580.  
  581. 2.5   Complicating the Issue:  More on Element Declarations
  582.  
  583.    In the simple cases described so far, it has been assumed that one
  584. can identify the immediate constituents of every element defined in a
  585. textual structure.  A poem consists of stanzas, and an anthology consists 
  586. of poems; stanzas do not float around unattached to poems or combined 
  587. into some other unrelated element; a poem cannot contain an
  588. anthology.  All the elements of a given document type may be arranged
  589. into a hierarchic structure, arranged like a family tree with a single
  590. ancestor at the top and many children (mostly the elements containing
  591. #PCDATA) at the bottom.  This gross simplification turns out to be 
  592. surprisingly effective for a large number of purposes. It is not however
  593. adequate for the full complexity of real textual structures.  In particular, 
  594. it does not cater for the case of more or less freely floating
  595. elements that can appear at almost any hierarchic level in the structure, 
  596. and it does not cater for the case where different elements overlap or 
  597. several different trees may be identified in the same document.
  598. To deal with the first case, SGML provides the exception mechanism; to
  599. deal with the second, SGML permits the definition of "concurrent" document
  600. structures.
  601.  
  602. 2.5.1   Exceptions to the Content Model
  603.  
  604.    In most documents, there will be some elements that can occur at any
  605. level of its structure.  Annotations, for example, might be attached to
  606. the whole of a poem, to a stanza, to a line of a stanza or to a single
  607. word within it.  In a textual critical edition, the same might be true
  608. of variant readings.  In this simple case, the complexity of adding an
  609. annotation element as an optional component of every content model is
  610. not particularly onerous; in a more realistically complex model perhaps
  611. containing some ten or twenty levels such an approach can become much
  612. more difficult.
  613.  
  614.    To cope with this, SGML allows for any content model to be further
  615. modified by means of an exception list.  There are two types of exception:
  616. inclusions,  that is, additional elements that can be included at
  617. any point in the model group or any of its constituent elements; and
  618. exclusions, that is, elements that cannot be included within the current
  619. model.
  620.  
  621.    To extend our declarations further to allow for annotations and variant 
  622. readings, which we will assume can appear anywhere within the text
  623. of a poem, we first need to add declarations for these two elements:
  624.  
  625.      <!ELEMENT (note | variant) - - (#PCDATA)>
  626.  
  627. The note and variant elements must have both start- and end-tags, since
  628. they can appear anywhere.  Rather than add them to the content model for
  629. each type of poem, we can add them in the form of an inclusion list to
  630. the poem element, which now reads:
  631.  
  632.      <!ELEMENT poem - O (title?, (stanza+ | couplet+ | line+) )
  633.                                               +(note | variant) >
  634.  
  635. The plus sign at the start of the (NOTE | VARIANT) name list indicates
  636. that this is an inclusion exception.  With this addition, notes or variants 
  637. can appear at any point in the content of a poem element -- even
  638. those (such as <title>) for which we have defined a content model of
  639. #PCDATA.  They can thus also appear within notes or variants!
  640.  
  641.    If we wanted for some reason to prevent notes or variants appearing
  642. within titles, we could add an exclusion exception to the declaration
  643. for <title> above:
  644.  
  645.      <!ELEMENT title  - O  (#PCDATA)  -(note | variant) >
  646.  
  647. The minus sign at the start of the (NOTE | VARIANT) name list indicates
  648. that this is an exclusion exception.  With this addition, notes and 
  649. variants will be prohibited from appearing within titles, notwithstanding
  650. their potential inclusion implied by the previous addition to the content 
  651. model for <poem>.
  652.  
  653.    In the same way, we could prevent notes and variants from nesting
  654. within notes and variants by modifying the definition above to read
  655.  
  656.      <!ELEMENT (note | variant) - - (#PCDATA)  -(note | variant) >
  657.  
  658. The meticulous reader will note that this precludes both variants within
  659. notes and notes within variants.  Inclusion and exclusion exceptions
  660. should be used with care as their ramifications may not be immediately
  661. apparent.
  662.  
  663. 2.5.2   Concurrent Structures
  664.  
  665.    All the structures we have so far discussed have been simply hierarchic:  
  666. that is, at every level of the tree, each node is entirely contained by 
  667. a parent node.   The figure below represents the structure of
  668. a document conforming to the simple DTD we have so far defined as a tree
  669. (drawn on its side through exigencies of space).  We have already seen
  670. how Blake's poem can be divided into a title and two stanzas, each of
  671. four lines.  In this diagram, we add a second poem, consisting of and a
  672. title, to make up an instance of an anthology:
  673.  
  674.                               | --  --  --  --  --  --  --  --  -- -title
  675.                               |
  676.                               |              | --  -- line1
  677.                               |              | --  -- line2
  678.                | --  --  -- POEM1 -- -| --  -- stanza1 -- -| --  -- line3
  679.                |              |              | --  -- line4
  680.                |              |
  681.                |              |              | --  -- line5
  682.                |              | --  -- stanza2 -- -| --  -- line6
  683.                |                             | --  -- line7
  684.                |                             | --  -- line8
  685.      anthology-|
  686.                |
  687.                |              | --  --  --  --  --  --  --  --  -- -title
  688.                |              |
  689.                |              |              | --  -- line1
  690.                |              |              | --  -- line2
  691.                | --  --  -- POEM2 -- -| --  -- stanza1 -- -| --  -- line3
  692.                                              | --  -- line4
  693.                                              | --  -- line5
  694.  
  695.    Clearly, there are many such trees that might be drawn to describe
  696. the structure of this or other anthologies.  Some of them might be 
  697. representable as further subdivisions of this tree:  for example, we might
  698. subdivide the lines into individual words, since no word crosses a line
  699. boundary.  But equally clearly, there are many other trees that might be
  700. drawn which do not fit within this tree.  We might, for example be
  701. interested in syntactic structures which rarely respect the formal
  702. boundaries of verse.  Or, to take a simpler example, we might want to
  703. represent the pagination of different editions of the same text.
  704.  
  705.    One way of doing this would be to group the lines and titles of our
  706. current model into pages.  A declaration for such an element is simple
  707. enough:
  708.  
  709.      <!ELEMENT page - - ((title?, line+)+)   >
  710.  
  711. That is, a page consists of one or more unnamed groups, each of which
  712. contains an optional title, followed by a sequence of lines. (Note,
  713. incidentally, that this model prohibits a title appearing on its own at
  714. the foot of a page).  However, simply inserting the element <page> into
  715. the hierarchy already defined is not as easy as it might seem.  Some
  716. poems are longer than a single page, and other pages contain more than
  717. one poem.  We cannot therefore insert the element <page> between
  718. <anthology> and <poem> in the hierarchy, nor can it go between <poem>
  719. and <stanza>, nor yet in both places at once!  What is needed is the
  720. ability to create a separate hierarchy, with the same elements at the
  721. bottom (the stanzas, lines and titles), but combined into a different
  722. superstructure.  This is the ability which the CONCUR feature of SGML
  723. gives.
  724.  
  725.    A separate document type definition must be created for each hierarchic 
  726. tree into which the text is to be structured.  The definition we
  727. have so far built up for the anthology looks, in full, like this:
  728.  
  729.          <!DOCTYPE anthology [
  730.          <!ELEMENT anthology      - -  (poem+)             >
  731.          <!ELEMENT poem           - -  (title?, stanza+)   >
  732.          <!ELEMENT stanza         - O  (line+)             >
  733.          <!ELEMENT (title | line) - O  (#PCDATA)           >
  734.          ]>
  735.  
  736. As this example shows, the name of a document type must always be the
  737. same as the name of the largest element in it, that is the element at
  738. the top of the hierarchy.  The syntax used is discussed further below
  739. (see section 2.8.2, "The DTD," on page 3).  Let us now add to this 
  740. declaration a second definition for a concurrent document type, which we
  741. will call a paged anthology, or <p.anth> for short:
  742.  
  743.          <!DOCTYPE p.anth [
  744.          <!ELEMENT p.anth         - -  (page+)               >
  745.          <!ELEMENT page           - -  ((title?, line+)+)    >
  746.          <!ELEMENT (title|line)   - O  (#PCDATA)             >
  747.          ]>
  748.  
  749.    We have now defined two different ways of looking at the same basic
  750. text -- the PCDATA components grouped by both these document type 
  751. definitions into lines or titles.  In one view, the lines are grouped into
  752. stanzas and poems; in the other they are grouped into pages only.
  753. Notice that it is exactly the same text which is visible in both views:
  754. the two hierarchies simply allow us to arrange it in two different ways.
  755.  
  756.    To mark up the two views, it will be necessary to indicate which
  757. hierarchy each element belongs to.  This is done by including the name
  758. of the document type (the view) within parentheses immediately before
  759. the identifier concerned, inside both start- and end-tags.  Thus, pages
  760. (which are only visible in the <p.anth> document type) must be tagged
  761. with a <(p.anth)page> tag at their start and a </(p.anth)page> at their
  762. end. In the same way, as poems and stanzas appear only in the <anthology> 
  763. document type, they must now be tagged using <(anthology)poem> and
  764. <(anthology)stanza> tags respectively.  For the line and title elements,
  765. however, which appear in both hierarchies, no document type specification 
  766. need be given:  any tag containing only a name is assumed to mark
  767. an element present in every active document type.
  768.  
  769.    As a simple example, let us assume that Blake's poem appears in some
  770. paged anthology, with the page break occurring half way through the
  771. first stanza.  The poem might then be marked up as follows:
  772.  
  773.          <(anthology)anthology>
  774.          <(p.anth)p.anth>
  775.          <(p.anth)page>
  776.  
  777.          <! --       other titles and lines on this page here  -- >
  778.  
  779.               <(anthology)poem><title>The SICK ROSE
  780.               <(anthology)stanza>
  781.                    <line>O Rose thou art sick.
  782.                    <line>The invisible worm,
  783.          </(p.anth)page>
  784.          <(p.anth)page>
  785.                    <line>That flies in the night
  786.                    <line>In the howling storm:
  787.               <(anthology)stanza>
  788.                    <line>Has found out thy bed
  789.                    <line>Of crimson joy:
  790.                    <line>And his dark secret love
  791.                    <line>Does thy life destroy.
  792.               </(anthology)poem>
  793.  
  794.          <! --       rest of material on this page here     -- >
  795.          </(p.anth)page>
  796.  
  797.          </(p.anth)p.anth)
  798.          </(anthology)anthology>
  799.  
  800.    It is now possible to select only the elements concerned with a particular 
  801. view from the text, even though both are represented in the tagging.  
  802. A processor concerned only with the pagination will see only
  803. those elements whose tags include the P.ANTH specification, or which
  804. have no specification at all.  A processor concerned only with the
  805. ANTHOLOGY view of things will not see the page breaks.  And a processor
  806. concerned to inter-relate the two views can do so unambiguously.
  807.  
  808.    A note of caution is appropriate:  CONCUR is an optional feature of
  809. SGML, and not all available SGML software systems support it, while
  810. those which do, do not always do so according to the letter of the standard.  
  811. For that reason, if for no other, wherever these Guidelines have
  812. identified a potential application of CONCUR, they also invariably suggest 
  813. alternative methods as well.  For fuller discussion of these
  814. issues, see chapter 34, "Markup for Non-Hierarchical Phenomena," [in
  815. separate fascicle].
  816.  
  817.    Note also that we cannot introduce a new element, a page number for
  818. example, into the <p.anth> document type, since there is no existing
  819. data in the <anthology> document type which could be fitted into it. One
  820. way of adding that extra information is discussed in the next section.
  821.  
  822. 2.6   Attributes
  823.  
  824.    In the SGML context, the word "attribute," like some other words, has
  825. a specific technical sense.  It is used to describe information which is
  826. in some sense descriptive of a specific element occurrence but not
  827. regarded as part of its content. For example, you might wish to add a
  828. "status" attribute to occurrences of some elements in a document to
  829. indicate their degree of reliability, or to add an "identifier" attribute 
  830. so that you could refer to particular element occurrences from
  831. elsewhere within a document.  Attributes are useful in precisely such
  832. circumstances.
  833.  
  834.    Although different elements may have attributes with the same name,
  835. (for example, in the TEI scheme, every element is defined as having an
  836. id attribute), they are always regarded as different, and may have different 
  837. values assigned to them.  If an element has been defined as having 
  838. attributes, the attribute values are supplied in the document
  839. instance as attribute-value pairs inside the start-tag for the element
  840. occurrence. An end-tag may not contain an attribute-value specification,
  841. since it would be redundant.
  842.  
  843.    For example
  844.  
  845.      <poem id=P1 status="draft"> ... </poem>
  846.  
  847. The <poem> element has been defined as having two attributes:  id and
  848. status.  For the instance of a <poem> in this example, represented here
  849. by an ellipsis, the id attribute has the value "P1" and the status
  850. attribute has the value "draft."  An SGML processor can use the values
  851. of the attributes in any way it chooses; for example, a formatter might
  852. print a poem element which has the status attribute set to "draft" in a
  853. different way from one with the same attribute set to "revised"; another
  854. processor might use the same attribute to determine whether or not poem
  855. elements are to be processed at all.  The id attribute is a slightly
  856. special case in that, by convention, it is always used to supply a
  857. unique value to identify a particular element occurrence, which can be
  858. used for cross reference purposes, as discussed further below.
  859.  
  860.    Like elements, attributes are declared in the SGML document type 
  861. declaration, using rather similar syntax.  As well as specifying its name
  862. and the element to which it is to be attached, it is possible to specify
  863. (within limits) what kind of value is acceptable for an attribute and a
  864. default value.
  865.  
  866.    The following declarations could be used to define the two attributes
  867. we have specified above for the <poem> element:
  868.  
  869.      <!ATTLIST poem
  870.                id       ID                              #IMPLIED
  871.                status   (draft | revised | published)   draft        >
  872.  
  873.    The declaration begins with the symbol "ATTLIST," which introduces an
  874. attribute list specification.  The first part of this specifies the 
  875. element (or elements) concerned.  In our example, attributes have been
  876. declared only for the <poem> element. If several elements share the same
  877. attributes, they may all be defined in a single declaration; just as
  878. with element declarations, several names may be given in a parenthesized
  879. list.  Following this name (or list of names), is a series of rows, one
  880. for each attribute being declared, each containing three parts.  These
  881. specify the name of the attribute, the type of value it takes, and a
  882. default value respectively.
  883.  
  884.    Attribute names ("id" and "status" in this example) are subject to
  885. the same restrictions as other names in SGML; they need not be unique
  886. across the whole DTD, however, but only within the list of attributes
  887. for a given element.
  888.  
  889.    The second part of an attribute specification can take one of two
  890. forms, both illustrated above.  The first case uses one of a number of
  891. special keywords to declare what kind of value an attribute may take.
  892. In the example above, the special keyword ID is used to indicate that
  893. the attribute ID will be used to supply a unique identifying value for
  894. each poem instance (see further the discussion below).  Among other 
  895. possible SGML keywords are
  896.  
  897. CDATA:  The attribute value may contain any valid character data,
  898.   including tags
  899.  
  900. IDREF:  The attribute value must contain a pointer to some other element
  901.   (see further the discussion of ID below)
  902.  
  903. NMTOKEN:  The attribute value is a name token, that is, (more or less)
  904.   any string of alphanumeric characters
  905.  
  906. NUMBER:  The attribute value is composed only of numerals
  907.  
  908.    In the example above, a list of the possible values for the "status"
  909. attribute has been supplied.  This means that a parser can check that no
  910. <poem> is defined for which the status attribute does not have one of
  911. "draft," "revised," or "published" as its value.  Alternatively, if the
  912. declared value had been either CDATA or NAME, a parser would have
  913. accepted almost any string of characters (status=awful or status=12345678 
  914. if it had been a NMTOKEN; status="anything goes" or status = "well, 
  915. almost anything" if it were CDATA).  Sometimes, of course, the
  916. set of possible values cannot be pre-defined.  Where it can, as in this
  917. case, it is generally better to do so.
  918.  
  919.    The last piece of each information in each attribute definition specifies 
  920. how a parser should interpret the absence of the attribute concerned.  
  921. This can be done by supplying one of the special keywords listed below, 
  922. or (as in this case) by supplying a specific value which is
  923. then regarded as the value for every element which does not supply a
  924. value for the attribute concerned.  Using the example above, if a poem
  925. is simply tagged <poem>, the parser will treat it exactly as if it were
  926. tagged <poem status=draft>.  Alternatively, one of the following keywords 
  927. may be used to specify a default value for an attribute:
  928.  
  929. #REQUIRED: A value must be specified.
  930. #IMPLIED:  A value need not be supplied (as in the case of ID above).
  931. #CURRENT:  If no value is supplied in this element occurrence, the last
  932.         specified value should be used.
  933.  
  934.    For example, if the attribute definition above were rewritten as
  935.  
  936.      <!ATTLIST poem
  937.                id       ID                             #IMPLIED
  938.                status   (draft | revised | published)  #CURRENT      >
  939.  
  940. then poems which appear in the anthology simply tagged <poem> would be
  941. treated as if they had the same status as the preceding poem.  If the
  942. keyword were #REQUIRED rather than #CURRENT, the parser would report
  943. such poems as erroneously tagged, as it would if any value other than
  944. "draft," "published," or "revised" were supplied.  The use of #CURRENT
  945. implies that whatever value is specified for this attribute on the first
  946. poem will apply to all subsequent poems, until altered by a new value.
  947. Only the status of the first poem need therefore be supplied, if all are
  948. the same.
  949.  
  950.    It is sometimes necessary to refer to an occurrence of one textual
  951. element from within another, an obvious example being phrases such as
  952. "see note 6" or "as discussed in chapter 5."  When a text is being produced 
  953. the actual numbers associated with the notes or chapters may not
  954. be certain.  If we are using descriptive markup, such things as page or
  955. chapter numbers, being entirely matters of presentation will not in any
  956. case be present in the marked up text:  they will be assigned by whatever 
  957. processor is operating on the text (and may indeed differ in different 
  958. applications).  SGML therefore provides a special mechanism by
  959.  
  960.  --  --  --  --  --  --  --  --  --  --  --  -- -
  961.  
  962. (1) International Organization for Standardization, ISO 8879:  Informa-
  963.     tion processing -- Text and office systems -- Standard Generalized Mark-
  964.     up Language (SGML), ([Geneva]:  ISO, 1986).  Although widely said to
  965.     be short for the surnames of its progenitors, the official expansion
  966.     of this abbreviation is "Standard Generalized Markup Language."
  967.  
  968.  
  969. (2) Work is currently going on in the standards community to create
  970.     (using SGML syntax) a definition of a standard "document style
  971.     semantics and specification language" or DSSSL.
  972.  
  973. (3) The actual characters used for the delimiting characters (the angle
  974.     brackets, exclamation mark and solidus) may be redefined, but it is
  975.     conventional to use the characters used in this description.
  976.  
  977. (4) The example is taken from William Blake's Songs of innocence and
  978.     experience (1794).  The markup is designed for illustrative purposes
  979.     and is not TEI conformant.
  980.  
  981. (5) Note that this simple example has not addressed the problem of mark-
  982.     ing elements such as sentences explicitly; the implications of this
  983.     are discussed below in section 2.5.2, "Concurrent Structures."
  984.  
  985. (6) Like the occurrence indicators, these are assigned formal names by
  986.     the standard and may be redefined with an appropriate SGML declara-
  987.     tion.
  988.  
  989. (7) It will not have escaped the astute reader that the fact that verse
  990.     paragraphs need not start on a line boundary seriously complicates
  991.     the issue; see further section 2.5.2, "Concurrent Structures."
  992.  
  993.                                            Draft Version 2, May 28, 1993
  994.  
  995.  
  996. TEI P2, Chapter SG                                                page 3
  997.  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  -- 
  998.  
  999. which any element occurrence may be given a special identifier, a kind
  1000. of label, which may be used to refer to it from anywhere  else within
  1001. the same text.  The cross-reference itself is regarded as an element
  1002. occurrence of a specific kind, which must also be declared in the DTD.
  1003. In each case, the identifying label (which may be arbitrary) is supplied
  1004. as the value of a special attribute.
  1005.  
  1006.    Suppose, for example, we wish to include a reference within the notes
  1007. on one poem that refers to another poem.  We will first need to provide
  1008. some way of attaching a label to each poem:  this is done by defining an
  1009. attribute for the <poem> element, as suggested above.
  1010.  
  1011.      <!ATTLIST poem
  1012.                id       ID     #IMPLIED >
  1013.  
  1014.    Here we define an attribute id, the value of which must be of type
  1015. ID.  It is not required that any attribute of type ID have the name "ID"
  1016. as well; it is however a useful convention almost universally observed.
  1017. Note that not every poem need carry an id attribute and the parser may
  1018. safely ignore the lack of one in those which do not. Only poems to which
  1019. we intend to refer need use this attribute; for each such poem we should
  1020. now include in its start-tag some unique identifier, for example:
  1021.  
  1022.               <POEM ID=Rose>
  1023.                    Text of poem with identifier 'ROSE'
  1024.               </POEM>
  1025.  
  1026.               <POEM ID=P40>
  1027.                    Text of poem with identifier 'P40'
  1028.               </POEM>
  1029.  
  1030.               <POEM>
  1031.                    This poem has no identifier
  1032.               </POEM>
  1033.  
  1034.  
  1035.    Next we need to define a new element for the cross reference itself.
  1036. This will not have any content -- it is only a pointer -- but it has an
  1037. attribute, the value of which will be the identifier of the element
  1038. pointed at.  This is achieved by the following declarations:
  1039.  
  1040.          <!ELEMENT poemref - O EMPTY                  >
  1041.          <!ATTLIST poemref     target IDREF #REQUIRED >
  1042.  
  1043.    The <poemref> element needs no end-tag because it has no content.  It
  1044. has a single attribute called target.  The value of this attribute must
  1045. be of type IDREF (the keyword used for cross reference pointers of this
  1046. type) and it must be supplied.
  1047.  
  1048.    With these declarations in force, we can now encode a reference to
  1049. the poem with id "Rose" as follows:
  1050.  
  1051.          Blake's poem on the sick rose <POEMREF TARGET=Rose> ...
  1052.  
  1053.    When an SGML parser encounters this empty element it will simply
  1054. check that a poem exists with the identifier "Rose".  Different SGML
  1055. processors could take any number of additional actions:  a formatter
  1056. might construct an exact page and line reference for the location of the
  1057. poem in the current document and insert it, or just quote the poem's
  1058. title or first lines.  A hypertext style processor might use this element 
  1059. as a signal to activate a link to the poem being referred to.  The
  1060. purpose of the SGML markup is simply to indicate that a cross reference
  1061. exists:  it does not determine what the processor is to do with it.
  1062.  
  1063.  
  1064. 2.7   SGML Entities
  1065.  
  1066.    The aspects of SGML discussed so far are all concerned with the mark-
  1067. up of structural elements within a document.  SGML also provides a simple 
  1068. and flexible method of encoding and naming arbitrary parts of the
  1069. actual content of a document in a portable way.  In SGML the word entity
  1070. has a special sense:  it means a named part of a marked up document,
  1071. irrespective of any structural considerations.  An entity might be a
  1072. string of characters or a whole file of text.  To include it in a 
  1073. document, we use a construction known as an entity reference.  For example,
  1074. the following declaration
  1075.  
  1076.      <!ENTITY tei "Text Encoding Initiative">
  1077.  
  1078. defines an entity whose name is "tei"(8) and whose value is the string
  1079. "Text Encoding Initiative."  This is an instance of a general entity
  1080. declaration; so is the following system entity declaration:
  1081.  
  1082.      <!ENTITY ChapTwo SYSTEM "sgmlmkup.txt">
  1083.  
  1084. This defines a system entity whose name is "ChapTwo" and whose value is
  1085. the text associated with the system identifier -- in this case, the system
  1086. identifier is the name of an operating system file and the replacement
  1087. text of the entity is the contents of the file.
  1088.  
  1089.    Once an entity has been declared, it may be referenced anywhere with-
  1090. in a document.  This is done by supplying its name prefixed with the
  1091. ampersand character and followed by the semicolon.  The semicolon may be
  1092. omitted if the entity reference is followed by a space or record end.
  1093.  
  1094.    When an SGML parser encounters such an entity reference, it immediately 
  1095. substitutes the value declared for the entity name.  Thus, the
  1096. passage "The work of the &tei has only just begun" will be interpreted
  1097. by an SGML processor exactly as if it read "The work of the Text Encoding 
  1098. Initiative has only just begun."  In the case of a system entity, it
  1099. is, of course, the contents of the operating system file which are 
  1100. substituted, so that the passage "The following text has been suppressed:
  1101. &ChapTwo;" will be expanded to include the whole of whatever the system
  1102. finds in the file sgmlmkup.txt.
  1103.  
  1104.    This obviously saves typing, and simplifies the task of maintaining
  1105. consistency in a set of documents.  If the printing of a complex document 
  1106. is to be done at many sites, the document body itself might use an
  1107. entity reference, such as "&site;", wherever the name of the site is
  1108. required.  Different entity declarations could then be added at different 
  1109. sites to supply the appropriate string to be substituted for this
  1110. name, with no need to change the text of the document itself.
  1111.  
  1112.    This string substitution mechanism has many other applications.  It
  1113. can be used to circumvent the notorious inadequacies of many computer
  1114. systems for representing the full range of graphic characters needed for
  1115. the display of modern English (let alone the requirements of other modern 
  1116. scripts or of ancient languages).  So-called "special characters"
  1117. not directly accessible from the keyboard (or if accessible not correctly 
  1118. translated when transmitted) may be represented by an entity reference.
  1119.  
  1120.    Suppose, for example, that we wish to encode the use of ligatures in
  1121. early printed texts.  The ligatured form of "ct" might be distinguished
  1122. from the non-ligatured form by encoding it as "&ctlig;" rather than
  1123. "ct."  Other special typographic features such as leafstops or rules
  1124. could equally well be represented by mnemonic entity references in the
  1125. text. When processing such texts, an entity declaration would be added
  1126. giving the desired representation for such textual elements.  If, for
  1127. example, ligatured letters are of no interest, we would simply add a
  1128. declaration such as
  1129.  
  1130.      <!ENTITY ctlig "ct" >
  1131.  
  1132. and the distinction present in the source document would be removed.
  1133. If, on the other hand, a formatting program capable of representing
  1134. ligatured characters is to be used, we might replace the entity 
  1135. declaration to give whatever sequence of characters such a program requires 
  1136. as the expansion.
  1137.  
  1138.    A list of entity declarations is known as an entity set.  Standard
  1139. entity sets are provided for use with most SGML processors, in which the
  1140. names used will normally be taken from the lists of such names published
  1141. as an annex to the SGML standard and elsewhere, as mentioned above.
  1142.  
  1143.    The replacement values given in an entity declaration are, of course,
  1144. highly system dependent.  If the characters to be used in them cannot be
  1145. typed in directly, SGML provides a mechanism to specify characters by
  1146. their numeric values, known as character references.  A character reference 
  1147. is distinguished from other characters in the replacement string by
  1148. the fact that it begins with a special symbol, conventionally the
  1149. sequence "&#", and ends with the normal semicolon.  For example, if the
  1150. formatter to be used represents the ligatured form of ct by the characters 
  1151. c and t prefixed by the character with decimal value 102, the entity 
  1152. declaration would read:
  1153.  
  1154.      <!ENTITY ctlig "fct" >
  1155.  
  1156. Note that character references will generally not make sense if transferred 
  1157. to another hardware or software environment:  for this reason,
  1158. their use is only recommended in situations like this.
  1159.  
  1160.    Useful though the entity reference mechanism is for dealing with
  1161. occasional departures from the expected character set, no one would 
  1162. consider using it to encode extended passages, such as quotations in Greek
  1163. or Russian in an English text.  In such situations, different mechanisms
  1164. are appropriate.  These are discussed elsewhere in these Guidelines (see
  1165. chapter 4, "Characters and Character Sets," [in separate fascicle]).
  1166.  
  1167.    A special form of entities, parameter entities, may be used within
  1168. SGML markup declarations; extensive examples may be found in chapter 3,
  1169. "Structure of the TEI Document Type Definitions," [in separate fascicle].
  1170.  
  1171. 2.8   Putting It All Together
  1172.  
  1173.    An SGML conformant document has a number of parts, not all of which
  1174. have been discussed in this chapter, and many of which the user of these
  1175. Guidelines may safely ignore.  For completeness, the following summary
  1176. of how the parts are inter-related may however be found useful.
  1177.  
  1178.    An SGML document consists of an SGML prolog and a document instance.
  1179. The prolog contains an SGML declaration (described below) and a document
  1180. type declaration, which contains element and entity declarations such as
  1181. those described above.  Different software systems may provide different
  1182. ways of associating the document instance with the prolog; in some cases, 
  1183. for example, the prolog may be "hard-wired" into the software used,
  1184. so that it is completely invisible to the user.
  1185.  
  1186.  
  1187. 2.8.1   The SGML Declaration
  1188.  
  1189.    The SGML declaration specifies basic facts about the dialect of SGML
  1190. being used such as the character set, the codes used for SGML delimiters, 
  1191. the length of identifiers, etc.  Its content for TEI-conformant
  1192. document types is discussed further in chapters 39, "Formal Grammar for
  1193. the TEI-Interchange-Format Subset of SGML," [in separate fascicle] and
  1194. 30, "TEI Conformance," [in separate fascicle]. Normally the SGML 
  1195. declaration will be held in the form of compiled tables by the SGML processor
  1196. and will thus be invisible to the user.
  1197.  
  1198. 2.8.2   The DTD
  1199.  
  1200.    The document type declaration specifies the document type definition
  1201. against which the document instance is to be validated.  Like the SGML
  1202. declaration it may be held in the form of compiled tables within the
  1203. SGML processor, or associated with it in some way which is invisible to
  1204. the user, or requires only that the name of the document type be specified 
  1205. before the document is validated.
  1206.  
  1207.    At its simplest the document type declaration consists simply of a
  1208. base document type definition (possibly also one or more concurrent 
  1209. document type definitions) which is prefixed to the document instance.  For
  1210. example:
  1211.  
  1212.      <!DOCTYPE my.dtd [
  1213.          <! --  all declarations for MY.DTD go here  -- >
  1214.          ...
  1215.      ]>
  1216.      <my.dtd>
  1217.          This is an instance of a MY.DTD type document
  1218.      </my.dtd>
  1219.  
  1220.    More usually, the document type definition will be held in a separate
  1221. file and invoked by reference, as follows:
  1222.  
  1223.          <!DOCTYPE tei system "tei.dtd" [
  1224.          ]>
  1225.          <tei>
  1226.               This is an instance of an unmodified TEI type document
  1227.          </tei>
  1228.  
  1229. Here, the text of the TEI.1 document type declaration is not given
  1230. explicitly, but the SGML processor is told that it may be read from the
  1231. file with the system identifier given in quotation marks.  The square
  1232. brackets may still be supplied, as in this example, even though they
  1233. contain nothing.
  1234.  
  1235.    The part enclosed by square brackets is known as the document type
  1236. subset.  Its purpose is to specify any modification to be made to the
  1237. DTD being invoked, thus:
  1238.  
  1239.          <!DOCTYPE TEI SYSTEM "tei.dtd" [
  1240.               <!ENTITY tla "Three Letter Acronym">
  1241.               <!ELEMENT my.tag - - (#PCDATA)>
  1242.               <! --  any other special-purpose declarations or
  1243.                    re-definitions go in here  -- >
  1244.          ]>
  1245.          <tei>
  1246.               This is an instance of a modified TEI.1 type document,
  1247.               which may contain <my.tag>my special tags</my.tag> and
  1248.               references to my usual entities such as &tla;.
  1249.          </tei.1>
  1250.  
  1251. In this case, the document type definition in force is the concatenation
  1252. of the document type subset and the contents of the file specified.  The
  1253. order is important, because in SGML only the first declaration of an
  1254. entity counts.  In the above example, therefore, if the document type
  1255. definition also declared an entity called "tla"  the declaration within
  1256. brackets would take precedence. (This does not apply to elements, which
  1257. may not be declared more than once; if a declaration for <my.tag>
  1258. already existed in the document type definition, the above example would
  1259. be flagged as erroneous).  Combining and extending document type definitions 
  1260. is discussed further in chapter 3, "Structure of the TEI Document
  1261. Type Definitions," [in separate fascicle].
  1262.  
  1263. 2.8.3   The Document Instance
  1264.  
  1265.    The document instance is the content of the document itself.  It contains 
  1266. only text, markup and general entity references, and thus may not
  1267. contain any new declarations.  A convenient way of building up large
  1268. documents in a modular fashion might be to use a DTD like the following:
  1269.  
  1270.          <!DOCTYPE tei [
  1271.               <!ENTITY chap1 system "chap1.txt">
  1272.               <!ENTITY chap2 system "chap2.txt">
  1273.               <!ENTITY chap3 " --  not yet written  -- ">
  1274.          ]>
  1275.          <tei.1>
  1276.               Some text to go before chapter 1
  1277.               &chap1;
  1278.               A bit of text meant to go between chapters 1 and 2.
  1279.               &chap2;
  1280.               &chap3;
  1281.               ...
  1282.          </tei.1>
  1283.  
  1284.  
  1285.    In this example, a DTD called TEI (the example assumes that this is
  1286. available without formality to the processor being used) has been
  1287. extended by entity declarations for each chapter of the work.  The first
  1288. two are system entities referring to the file in which the text of 
  1289. particular chapters is to be found; the third a dummy, indicating that the
  1290. text does not yet exist (alternatively, an entity with a null value
  1291. could be used).  In the document instance, the entity references &chap1;
  1292. etc. will be resolved by the parser to give the required contents.  The
  1293. chapter files themselves will not, of course, contain any markup
  1294. declarations -- just tagged text.
  1295.  
  1296. 2.9   Using SGML
  1297.  
  1298.    A variety of software is available to assist in the tasks of creating, 
  1299. validating and processing SGML documents.  Only a few basic types
  1300. can be described here. At the heart of most such software is an SGML
  1301. parser:  that is, a piece of software which can take a document type
  1302. definition and generate from it a software system capable of validating
  1303. any document invoking that DTD.  Output from a parser, at its simplest,
  1304. is just "yes" (the document instance is valid) or "no" (it is not).
  1305. Most parsers will however also produce a new version of the document
  1306. instance in canonical form (typically with all end-tags supplied and
  1307. entity references resolved) or formatted according to user specifications.  
  1308. This form can then be used by other pieces of software (loosely
  1309. or tightly coupled with the parser) to provide additional functions,
  1310. such as structured editing, formatting and database management.
  1311.  
  1312.    A structured editor is a kind of intelligent word-processor.  It can
  1313. use information extracted from a processed DTD to prompt the user with
  1314. information about which elements are required at different points in a
  1315. document as the document is being created.  It can also greatly simplify
  1316. the task of preparing a document, for example by inserting tags automatically.
  1317.  
  1318.    A formatter operates on a tagged document instance to produce a
  1319. printed form of it.  Many typographic distinctions, such as the use of
  1320. particular typefaces or sizes, are intimately related to structural 
  1321. distinctions, and formatters can thus usefully take advantage of 
  1322. descriptive markup.  It is also possible to define the tagging structure
  1323. expected by a formatting program in SGML terms, as a concurrent document
  1324. structure.
  1325.  
  1326.    Text-oriented database management systems typically use inverted file
  1327. indexes to point into documents, or subdivisions of them.  A search can
  1328. be made for an occurrence of some word or word pattern within a document
  1329. or within a subdivision of one.  Meaningful subdivisions of input documents 
  1330. will of course be closely related to the subdivisions specified
  1331. using descriptive markup.  It is thus simple for textual database systems 
  1332. to take advantage of SGML-tagged documents.  Much research work is
  1333. also currently going into ways of extending the capabilities of existing
  1334. (non-text) database systems to take advantage of the structuring information 
  1335. made explicit by SGML markup.
  1336.  
  1337.    Hypertext systems improve on other methods of handling text by supporting 
  1338. associative links within and across documents.  Again, the basic
  1339. building block needed for such systems is also a basic building block of
  1340. SGML markup:  the ability to identify and to link together individual
  1341. document elements comes free as a part of the SGML way of doing things.
  1342. By tagging links explicitly, rather than using proprietary software,
  1343. developers of hypertexts can be sure that the resources they create will
  1344. continue to be useful.  To load an SGML document into a hypertext system
  1345. requires only a processor which can correctly interpret SGML tags such
  1346. as those discussed in section 16, "Segmentation and Alignment," [in separate 
  1347. fascicle].
  1348.  
  1349.  --  --  --  --  --  --  --  --  --  --  --  -- -
  1350.  
  1351. (8) By convention case is significant in entity names, unlike element
  1352.     names.
  1353.                                            Draft Version 2, May 28, 1993
  1354.   
  1355. TEI P2, Chapter SG                                                page 4
  1356.  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  -- 
  1357.  
  1358.                       USABILITY REPORT AND COMMENT
  1359.   
  1360.    If you have comments of any kind on the current draft of the TEI
  1361. Guidelines, please complete this form and return it to one of the following 
  1362. addresses:
  1363.  
  1364.    C. M. Sperberg-McQueen, Computer Center (M/C 135), University of
  1365. Illinois at Chicago, 1940 W. Taylor Room 124, Chicago IL 60612-7352,
  1366. USA.  Bitnet:  U35395@UICVM, Internet:  U35395@uicvm.uic.edu
  1367.  
  1368.    Lou Burnard, Oxford University Computing Service, 13 Banbury Road,
  1369. Oxford OX2 6NN, UK.  Fax:  +44 (865) 273275, Janet:
  1370. LOU@UK.AC.OXFORD.VAX Internet:  LOU@vax.oxford.ac.uk
  1371.  
  1372. + --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  -- +
  1373. |                                                                      |
  1374. |  Further copies of this form may be downloaded from LISTSERV @       |
  1375. |  UICVM (or listserv @ uicvm.uic.edu).  Send a mail message contain-  |
  1376. |  ing the line 'GET TEIURC MEMO TEI-L'                                |
  1377. |                                                                      |
  1378.   --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  -- +
  1379.  
  1380.     Your name:
  1381.     Your postal address:
  1382.         
  1383.     Your e-mail address (if any):
  1384.     Your occupation:
  1385.     Your academic background:
  1386.     Your immediate reactions to the Guidelines (please tick or cross one
  1387.     only):
  1388.  
  1389.     Relevance to your present concerns or interests:  high  medium  low
  1390.     Importance to your future research plans:  high  medium  low
  1391.     Comprehensibility/usability of current draft:  high  medium  low
  1392.  
  1393.     Detailed technical comment:  [Please feel free to comment on any
  1394.     part of the Guidelines or in general.  Comments relating to specific
  1395.     parts of the text are most helpful if they include a section or
  1396.     chapter number]
  1397.    Thank you!
  1398.                             TEMPORARY INDEX
  1399.  
  1400. anthology,... 2                     Hypertext ... 3
  1401. attribute list
  1402.     specification ... 2              ID ... 2
  1403. attribute-value pairs ... 2          id (attribute) ... 2-3
  1404.                                       inclusions, ... 2
  1405. blank ... 2
  1406.                                       markup ... 2
  1407. canonical ... 3                       markup codes ... 2
  1408. character ... 3                       markup language ... 2
  1409. comment ... 2                        metalanguage, ... 2
  1410. content model ... 2                  minimization rules ... 2
  1411. couplets, ... 2                      model groups, ... 2
  1412.  
  1413. document instance ... 2-3            name group ... 2
  1414. document type ... 2                  name token, ... 2
  1415. document type declaration, ... 3     nature ... 2
  1416. document type definition ... 2
  1417. document type subset ... 3           occurrence indicator ... 2
  1418. document type, ... 2
  1419. DTD ... 2                            para ... 2
  1420.                                       parameter entities, ... 3
  1421. element ... 2                        parser ... 2-3
  1422. embedded ... 2                       poem ... 2
  1423. empty ... 2                          prolog ... 3
  1424. encoding ... 2
  1425. end-tag ... 2                        SGML ... 3
  1426. entities ... 2                       stanzaic, ... 2
  1427. entity ... 3                          start-tag ... 2
  1428. entity ... 3                         status (attribute) ... 2
  1429. entity reference ... 3               status. (attribute) ... 2
  1430. exception ... 2                      stichic ... 2
  1431. exclusions, ... 2                    string ... 2
  1432.                                       string substitution ... 3
  1433. formatter ... 3                      structured editor ... 3
  1434.                                       system entity declaration ... 3
  1435. general entity declaration ... 3
  1436. generic identifier ... 2             target (attribute) ... 3
  1437. group connector ...
  1438.  
  1439.                                            Draft Version 2, May 28, 1993
  1440.   
  1441.                                   NOTE
  1442.  
  1443.    This is the current draft (as of May 28, 1993) of one section of the
  1444. Guidelines for Electronic Text Encoding and Interchange, version 2 (also
  1445. known as TEI P2), produced by the Text Encoding Initiative.  This fasci-
  1446. cle contains:
  1447.  
  1448. *   a table of contents for TEI P2, indicating the status of each section
  1449.         as of the release date of this fascicle
  1450. *   a draft for one section of TEI P2
  1451. *   entries derived from this section for the reference list of tags of
  1452.         TEI P2 (if any)
  1453. *   a User Response and Comment Form
  1454.  
  1455.    Please feel free to send us your comments on the contents of this
  1456. draft and their applicability to your needs.  Comments may be sent to
  1457. the TEI-L list server for general discussion, or directly to either of
  1458. the TEI editors (adresses on the User Response and Comment form).  Bear
  1459. in mind in reading, however, that TEI P2 is a reference manual, not a
  1460. tutorial in the use of electronic text, and unavoidably assumes either a
  1461. certain amount of prior knowledge or patience with unfamiliar technical
  1462. material.  Note also that some matters which may appear obscure in one
  1463. section may well be treated in more detail elsewhere in the full text of
  1464. TEI P2.
  1465.  
  1466.    TEI P2, like P1, is a working draft.  The observant will find several
  1467. typographic and presentational flaws in the current text:  for example,
  1468. cross-references are not properly resolved in the LaTeX versions and
  1469. some parts of the reference material are not yet complete.  We hope to
  1470. rectify as many as possible of these flaws in the coming months, but
  1471. have decided not to allow them to delay any further the release of the
  1472. draft.  We hope that those interested in the Guidelines will find the
  1473. current state of the text readable and usable enough for the purpose of
  1474. substantive comment.  As far as possible, all comments received on this
  1475. section will be taken into account in the preparation of the next version 
  1476. of the Guidelines, which is due by the end of 1993.
  1477.  
  1478.  
  1479.    Updates on the status of the draft as a whole will be distributed
  1480. automatically to all subscribers of the Listserv list TEI-L.  To subscribe 
  1481. to TEI-L, send electronic mail to the address LISTSERV@UICVM (or
  1482. Listserv@uicvm.uic.edu) containing the single line
  1483.  
  1484.         subscribe tei-l J. Smith
  1485.  
  1486. (substituting your name for "J. Smith").  TEI-L is also the appropriate
  1487. place to pose questions or offer public comments on the TEI guidelines
  1488. and other relevant issues.  The TEI-L file server contains all the 
  1489. sections of TEI P2 thus far released, as well as other TEI materials.  Its
  1490. contents are shadowed at various other sites around the world; for more
  1491. information consult one of the following documents:
  1492.  
  1493. *   TEI ED J8, "Obtaining the Second Version of the TEI Guidelines (TEI
  1494.     P2)" (describes how to retrieve electronic copies of TEI P2 and the
  1495.     various formats they are available in)
  1496. *   TEI ED J9, "Obtaining Paper Copies of the Second Version of the TEI
  1497.     Guidelines (TEI P2)" (describes how to request paper copies of TEI
  1498.     P2, for those without electronic mail access)
  1499.  
  1500. These documents are available from the TEI-L file server or through the
  1501. editors at the addresses given on the User Response and Comment Form.
  1502.  
  1503.                   OVERALL TABLE OF CONTENTS FOR TEI P2
  1504.  
  1505.    The following list shows the expected contents of TEI P2 as a whole
  1506. and indicates the current status of each chapter.
  1507.  
  1508. Part I:  Introduction
  1509.      1.  About These Guidelines (in preparation)
  1510.      2.  Concise Summary of SGML (included in this partial copy)
  1511.      3.  Structure of the TEI Document Type Definitions (in preparation)
  1512.  
  1513. Part II:  Core Tags and General Rules
  1514.      4.  Characters and Character Sets (released 17 July 1992)
  1515.      5.  The TEI Header (released 19 August 1992)
  1516.      6.  Tags Available in All TEI Documents (released 10 Dec 1992)
  1517.      7.  Default Text Structure (released 26 March 1993)
  1518.  
  1519. Part III:  Base Tag Sets
  1520.      8.  Base Tag Set for Prose (released 24 Oct 1992)
  1521.      9.  Base Tag Set for Verse (in preparation)
  1522.      10.  Base Tag Set for Drama (in preparation)
  1523.      11.  Base Tag Set for Transcriptions of Spoken Texts (released 23
  1524.               Apr 1992)
  1525.      12.  Base Tag Set for Letters and Memoranda (in preparation)
  1526.      13.  Base Tag Set for Printed Dictionaries (in preparation)
  1527.      14.  Base Tag Set for Terminological Data (in preparation)
  1528.      15.  Composite Texts and Combining Bases (in preparation)
  1529.  
  1530. Part IV:  Additional Tag Sets
  1531.      16.  Segmentation and Alignment (released 26 January 1993)
  1532.      17.  Additional Tag Set for Simple Analysis (in preparation)
  1533.      18.  Additional Tag Set for Feature Structures (in preparation)
  1534.      19.  CE:  Indications of Certainty and Responsibility (in preparation)
  1535.      20.  Additional Tag Set for Transcription of Primary Sources (in
  1536.               preparation)
  1537.      21.  Additional Tag Set for Critical Apparatus (in preparation)
  1538.      22.  Additional Tags for Names and Dates (in preparation)
  1539.      23.  Networks, Graphs, Digraphs, and Trees (in preparation)
  1540.      24.  Formulae and Tables (TR4) (in preparation)
  1541.      25.  Additional Tag Set for Language Corpora (released 11 March
  1542.               1993)
  1543.  
  1544. Part V:  Auxiliary Document Types
  1545.      26.  SH The Independent Header (in preparation)
  1546.      27.  Writing System Declaration (in preparation)
  1547.      28.  Feature System Declaration (in preparation)
  1548.      29.  Tag Set Documentation (in preparation)
  1549.  
  1550. Part VI:  Technical Topics
  1551.      30.  TEI Conformance (in preparation)
  1552.      31.  Modifying TEI DTDs (in preparation)
  1553.      nn.  Local Installation and Support of TEI Markup (in preparation)
  1554.      32.  Rules for Negotiated and Non-Negotiated Interchange (in preparation)
  1555.      33.  Relationship of TEI to Other Standards (in preparation)
  1556.      34.  Markup for Non-Hierarchical Phenomena (in preparation)
  1557.      35.  Algorithm for Recognizing Canonical References (in preparation)
  1558.  
  1559. Part VII:  Alphabetical Reference List of Tags and Classes
  1560.  
  1561. Part VIII:  Reference Material
  1562.      36.  Full TEI Document Type Declarations (in preparation)
  1563.      37.  Standard Writing System Declarations (in preparation)
  1564.      38.  Sample Tag Set Documentation (in preparation)
  1565.      39.  Formal Grammar for the TEI-Interchange-Format Subset of SGML
  1566.           (released 4 Dec 1992)
  1567.  
  1568.                                            Draft Version 2, May 28, 1993
  1569.